﻿<?php
$serv = new swoole_server("127.0.0.1", 9501);

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
 
//设置异步任务的工作进程数量
$serv->set(array('task_worker_num' =>2));
 

//监听数据接收事件
$serv->on('receive', function($serv, $fd, $from_id, $data)  use ($redis) {
	
	global $redis;
	//echo "同步代码执行完成";
	if(! empty($data))
	{
		$data 	=	unserialize($data);
	
		$loop 	=	true;
		while ($loop) 
		{
			$game	=	'push_message_'.$data['game'];
			$test   =   $data['test'];

			if (! empty($test))
            {
                $game   =   $test;
            }

			$value = $redis->lpop($game);
			if(! empty($value))
			{
				$value   = json_decode($value,true);

				//投递异步任务
				$task_id = $serv->task($value);//非阻塞
			}
			else
			{
				$loop	=	false;
			}
		}

		if (empty($loop))
        {
            echo '全部搞定';
        }

	}
});
 
 
//处理异步任务
$serv->on('task', function ($serv, $task_id, $from_id, $data) {
    //handleFun($data);
	/*
	echo "接收异步任务[id=$task_id]".PHP_EOL;
	for ($i = 0 ; $i<20;$i++){
		echo 'send'.$i.' success'."\n";
	}
	*/
	echo "接收异步任务[id=$task_id]".PHP_EOL;
	print_r($data);
	handleFun($data);
	
    //返回任务执行的结果
    $serv->finish("finish");
});
 
 
//处理异步任务的结果
$serv->on('finish', function ($serv, $task_id, $data) {
    echo "异步任务执行完成".print_r($data).'-------'.PHP_EOL;
});
 
 
$serv->start();

function handleFun($post_data){
	return false;
	//初始化
    $curl = curl_init();
    //设置抓取的url
    curl_setopt($curl, CURLOPT_URL, 'https://api.zhanj163.com/index.php/home/index/api_accept');
    //设置头文件的信息作为数据流输出
    curl_setopt($curl, CURLOPT_HEADER, 1);
    //设置获取的信息以文件流的形式返回，而不是直接输出。
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    //设置post方式提交
    curl_setopt($curl, CURLOPT_POST, 1);
    //设置post数据
	/*
    $post_data = array(
        "username" => "coder",
        "password" => "12345"
        );
		*/
    curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
	curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);//这个是重点。  
    //执行命令
    $data = curl_exec($curl);
    //关闭URL请求
    curl_close($curl);
    //显示获得的数据
   
}
 
 ?>